package com.mikufufu.blog.security.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 系统角色枚举
 * 
 */
@Getter
@AllArgsConstructor
public enum RoleCode {

    /**
     * 超级管理员
     */
    ROLE_SYSTEM_ADMIN("system_admin", 1, "超级管理员"),
    /**
     * 管理员
     */
    ROLE_ADMIN("admin",2, "管理员"),
    /**
     * 普通用户
     */
    ROLE_USER("user",3, "普通用户"),
    /**
     * 游客
     */
    ROLE_VISITOR("visitor", 4, "游客");

    /**
     * 角色编码
     */
    private final String code;
    /**
     * 角色值
     */
    private final Integer value;
    /**
     * 描述
     */
    private final String desc;

    /**
     * 根据角色编码获取枚举
     * @param code 角色编码
     * @return 枚举
     */
    public static RoleCode getRoleCodeByCode(String code) {
        return Arrays.stream(RoleCode.values())
                .filter(role -> role.getCode().equals(code))
                .findFirst()
                .orElse(null);
    }

    public static RoleCode getRoleCodeByValue(Integer value) {
        return Arrays.stream(RoleCode.values())
                .filter(role -> role.getValue().equals(value))
                .findFirst()
                .orElse(null);
    }
}
